1. Technical Field
The present invention relates to an improved data processing system and, in particular, to a method and apparatus for debugging a program or programs. Still more particularly, the present invention provides a method and apparatus for resuming debugging from a predetermined starting point.
2. Description of Related Art
A computer program, also referred to as software, is a set of instructions that directs the functioning of various computer hardware resources in order to accomplish a particular task. In order to run a computer program, that program is typically loaded into the computer's main memory, where each instruction within the program is stored at a unique location, specified by an address.
One thing that all programs have in common is the need to ensure that they actually perform the task that they are designed to perform. The act of making this determination is generally referred to as testing the software, and the act of identifying the cause of a known problem, or “bug”, in a program is called “debugging” the software. To facilitate this process, computer programs, called “debuggers” have been created. A debugger supplies a program control interface to the programmer that allows one to do such things as executing only one program instruction at a time (referred to as “single stepping” the program), determining what the next instruction to be executed is, examining and/or modifying computer register and memory locations, and setting breakpoints at particular locations within the program, whereby computer program execution will continue unimpeded until the breakpoint is the next location in the program that is to be executed by the computer. These features, and others, greatly assist the programmer in determining whether the sequence of program instruction execution is as expected, and whether the correct data is being moved from one computer resource to another. This view into the actual operation of the program allows the programmer to identify where an error has been made in the program design.
However, using prior art debugging systems, the user must step through the entire process until a breakpoint is encountered. While prior art debuggers allow the user to set points at which the process will stop, no technique exists which allows the user to set a state from which debugging will begin. For long-running programs, which crash after several hours of running, the programmer must start from scratch to debug the problem. Therefore, a need exists for a method and apparatus for debugging a program from a predetermined starting point.